#ifndef OGenerateStrandDataModifier_H__
#define OGenerateStrandDataModifier_H__

enum
{
	// Dynamic attributes defined on enum class PlugId
	gsd_PLUGS = 1000,

	//////////////////////////////////////////////////////////////////////////
	// Object attributes -- DO NOT CHANGE, attribute keys on saved projects
	gsd_START = 2000,
	
	// Attributes
	gsd_StrandGroupAttribute,
	gsd_RandomSeedAttribute,
	gsd_TargetDataAttribute,
	gsd_TargetChannelAttribute,
	gsd_NewChannelNameAttribute,
	gsd_NewChannelTypeAttribute,
	gsd_SampleValueCountAttribute,
	gsd_TargetChannelIndexAttribute,
	gsd_GenerationMethodAttribute,
	gsd_IsStoringValuesAttribute,
	gsd_UseSourceValueRangeAttribute,
	gsd_MinimumSourceValueAttribute,
	gsd_MaximumSourceValueAttribute,
	gsd_UseTargetValueRangeAttribute,
	gsd_MinimumTargetValueAttribute,
	gsd_MaximumTargetValueAttribute,
	gsd_TextureMapAttribute,
	gsd_SceneObjectsAttribute,	// Deprecated
	gsd_SceneMeshesAttribute,
	gsd_SeExprStringAttribute,
	gsd_PreviousValueMultiplierAttribute,	// Deprecated
	gsd_CurrentValueMultiplierAttribute,	// Deprecated
	//gsd_CurrentTimeAttribute,

	// Arrays
	
	gsd_StoredValuesAttribute = 2100,
	gsd_StoredValueStrandIdsAttribute,
	gsd_StoredValueFirstVertexIndicesAttribute,
	

	//////////////////////////////////////////////////////////////////////////
	// Labels/Buttons
	
	gsd_Expression_Group = 3000,
	gsd_Expression_Apply,

	//////////////////////////////////////////////////////////////////////////

	gsd_END
};

enum
{
	// Equal to GuideDataGenerator::TargetDataType
	gsd_TargetData_ExistingStrandDataChannel,
	gsd_TargetData_NewStrandDataChannel,
	gsd_TargetData_StrandGroups,
	gsd_TargetData_StrandIds,
	gsd_TargetData_Widths,
	gsd_TargetData_TextureCoordinates,
	gsd_TargetData_StrandRotations,
	//
	gsd_TargetData_Count
};

enum
{
	gsd_NewChannelType_PerStrand,	// = StrandChannelType_PerStrand
	gsd_NewChannelType_PerVertex	// = StrandChannelType_PerVertex
};

enum
{
	// Equal to GuideDataGenerator::GenerationMethod
	gsd_GenerationMethod_Constant,
	gsd_GenerationMethod_Random,
	gsd_GenerationMethod_Index,
	gsd_GenerationMethod_StrandLength,
	gsd_GenerationMethod_StrandCurviness,
	gsd_GenerationMethod_StrandDistanceToObject,
	gsd_GenerationMethod_IsInsideObject,
	gsd_GenerationMethod_WorldSpacePosition,
	gsd_GenerationMethod_ObjectSpacePosition,
	gsd_GenerationMethod_SeExpr,
	gsd_GenerationMethod_TextureMap,
	//
	gsd_GenerationMethod_Count
};

#endif
